package concurrent.thread.yield;

/**
 * Thread.yield() 方法，使当前线程由执行状态，变成为就绪状态，让出cpu时间
 * 在下一个线程执行时候，此线程有可能被执行，也有可能没有被执行
 * <p>
 * 《Java编程思想》中这样描述：Thread,yield()方法的调用，是对线程调度器（Java线程计制的一部分，
 * 可以将CPU从一个线程转移到另一个线程）的建议，它在声明：“我已经执行完生命周期中最重要的部分了，
 * 此刻正是切换给其他任务执行一段时间的大好时机。”这完全是选择性的。
 */
public class YieldTest {

	public static void main(String[] args) {
		YieldThread yThield = new YieldThread();
		new Thread(yThield,"A").start();
		new Thread(yThield,"B").start();
	}
}

class YieldThread implements Runnable {

	@Override
	public void run() {
		for (int i = 0; i < 10; i++) {
			System.out.println(Thread.currentThread().getName() + "-" + i);
			if (i == 3) {
				Thread.yield();
			}
		}
	}
}
